/*
 *
 * CursoDAL.java
 * Copyright(c) 2013 UcentralSoft, Todos los derechos reservados 
 */
package controlador;

import modelo.*;
import java.sql.*;
import java.util.*;

/**
 * Maneja el acceso a los datos de seguridad del sistema
 *
 * @version 1.0 [2013/10/13]
 * @author Jorge Barrera
 */
public class CursoDAL {

    /**
     * Instancia del acceso a datos
     */
    public IDAL dataAcces;

    /**
     * Constructor de la clase
     *
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public CursoDAL() throws ClassNotFoundException, SQLException {
        dataAcces = DALFactory.DALFactoryMethod(DBServer.MySQl);
    }

    /**
     * Permite obtener el curso por id
     *
     * @param id
     * @return Curso
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public Curso ConsultarCursoPorId(int id) throws ClassNotFoundException, SQLException {
        Curso curso = new Curso();
        ResultSet dataSet = dataAcces.getData("SELECT id, descripcion, maxsecciones, activo FROM curso WHERE id = '" + id + "' AND activo");
        while (dataSet.next()) {
            curso.setId(dataAcces.getResultSet().getInt(1));
            curso.setDescripcion(dataAcces.getResultSet().getString(2));
            curso.setMaxSecciones(dataAcces.getResultSet().getInt(3));
            curso.setActivo(dataAcces.getResultSet().getBoolean(4));
        }
        return curso;
    }

    /**
     * Permite obetener todos los cursos
     *
     * @return List<Curso>
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public List<Curso> ConsultarCursos() throws ClassNotFoundException, SQLException {
        List<Curso> users = new Vector<Curso>();
        ResultSet dataSet = dataAcces.getData("SELECT id, descripcion, maxsecciones, activo FROM curso WHERE activo");
        while (dataSet.next()) {
            Curso curso = new Curso();
            curso.setId(dataAcces.getResultSet().getInt(1));
            curso.setDescripcion(dataAcces.getResultSet().getString(2));
            curso.setMaxSecciones(dataAcces.getResultSet().getInt(3));
            curso.setActivo(dataAcces.getResultSet().getBoolean(4));
            users.add(curso);
        }
        return users;
    }

    /**
     * Permite registrar un nuevo curso
     *
     * @param curso
     * @return boolean
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public boolean CrearCurso(Curso curso) throws ClassNotFoundException, SQLException {
        return dataAcces.setData("INSERT INTO curso(descripcion, maxsecciones, activo) VALUES ('" + curso.getDescripcion() + "', '" + curso.getMaxSecciones() + "', " + curso.getActivo() + ")");
    }

    /**
     * Permite actualizar un curso por id del mismo
     *
     * @param curso
     * @return boolean
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public boolean ActualizarCursoPorId(Curso curso) throws ClassNotFoundException, SQLException {
        return dataAcces.setData("UPDATE curso SET Id = '" + curso.getId() + "', Descripcion = '" + curso.getDescripcion() + "', MaxSecciones = '" + curso.getMaxSecciones() + "', Activo = " + curso.getActivo() + " WHERE Id = '" + curso.getId() + "'");
    }
}